package ar.edu.untref.robotica.simulador;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;

import javax.swing.JComponent;
import javax.swing.JFrame;

@SuppressWarnings("serial")
public class Graficador extends JComponent {

	private Escenario escenario;
	private JFrame ventana;
	private Graphics2D graficador;

	// una celda es...pixeles (del graficador, no de la imagen)
	private double relacionPixelCelda = 1;

	public Graficador(Escenario escenario) {

		this.escenario = escenario;
		this.configurarVentana();
	}

	public void configurarVentana() {

		int ancho = this.escenario.getImagen().getWidth(null);
		int alto = this.escenario.getImagen().getHeight(null);

		this.setPreferredSize(new Dimension(ancho, alto));

		ventana = new JFrame();
		ventana.setTitle("Simulador");
		ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		ventana.getContentPane().add(this);
		ventana.pack();
		ventana.setVisible(true);
	}

	@Override
	public void paint(Graphics graficador) {

		this.graficador = (Graphics2D) graficador;

		AffineTransform escala = new AffineTransform();
		escala.scale(relacionPixelCelda, relacionPixelCelda);
		this.graficador.transform(escala);

		dibujarImagen();
		dibujarRobot();
	}

	private void dibujarImagen() {

		Image imagen = this.escenario.getImagen();
		graficador.drawImage(imagen, 0, 0, null);
	}

	public void dibujarRobot() {

		graficador.setPaint(Color.blue);
		graficador.fill(this.escenario.getShapeRobot());
		graficador.setPaint(Color.cyan);
		graficador.fill(this.escenario.getIndicacionRobot());
	}

	public void aumentarZoom() {

		this.relacionPixelCelda = this.relacionPixelCelda + 0.1;
	}

	public void disminuirZoom() {

		this.relacionPixelCelda = this.relacionPixelCelda - 0.1;
	}

}
